
package com.dy.converter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description:
 * @Date：2018年6月28日 @author： DongY
 * @version ：1.0 1.[2018年6月28日]CreatBy：dy
 */

public class MysqlTypeConverter implements TypeConverter, Serializable {

	private static final long serialVersionUID = 1L;
	private Map<String, Class<?>> map = new HashMap<>();
	{
		map = new HashMap<>();
		map.put("int", Integer.class);
		map.put("integer", Integer.class);
		map.put("double", Double.class);
		map.put("float", Float.class);
		map.put("varchar", String.class);
		map.put("date", String.class);
		//暂时以string类型接收date类型参数
//		map.put("date", Date.class);
		map.put("datetime", Date.class);
		map.put("decimal", BigDecimal.class);
		map.put("timestamp", Date.class);
		map.put("bigint", Long.class);
	}

	@Override
	public Class<?> converter(String jdbcType) {
		if (jdbcType.contains("(")) {
			jdbcType = jdbcType.substring(0, jdbcType.indexOf("("));
		}
		final Class<?> javaType = map.get(jdbcType);
		if (javaType == null) {
			throw new IllegalArgumentException("未找到JDBC类型：‘" + jdbcType + "’对应的JAVA映射关系.");
		}
		return javaType;
	}
}
